package com.cleaningcloud.erp.service;

import com.cleaningcloud.erp.domain.ErpProcure;
import com.cleaningcloud.erp.domain.dto.ErpProcureDto;
import com.cleaningcloud.erp.domain.excelImport.ProcureExcelImport;
import com.cleaningcloud.erp.domain.vo.ErpProcureVo;

import java.util.List;

/**
 * 采购单Service接口
 *
 * @author cleaningcloud
 * @date 2024-09-26
 */
public interface IErpProcureService {
    /**
     * 查询采购单
     *
     * @param procureId 采购单主键
     * @return 采购单
     */
    ErpProcureVo selectErpProcureByProcureId(Long procureId);

    /**
     * 查询采购单列表
     *
     * @param erpProcure 采购单
     * @return 采购单集合
     */
    List<ErpProcureVo> selectErpProcureList(ErpProcureDto erpProcure);

    /**
     * 新增采购单
     *
     * @param erpProcure 采购单
     * @return 结果
     */
    int insertErpProcure(ErpProcureDto erpProcure);

    /**
     * 修改采购单
     *
     * @param erpProcure 采购单
     * @return 结果
     */
    int updateErpProcure(ErpProcureDto erpProcure);

    /**
     * 批量删除采购单
     *
     * @param procureIds 需要删除的采购单主键集合
     * @return 结果
     */
    int deleteErpProcureByProcureIds(Long[] procureIds);

    /**
     * 删除采购单信息
     *
     * @param procureId 采购单主键
     * @return 结果
     */
    int deleteErpProcureByProcureId(Long procureId);


    /**
     * 审核采购单
     *
     * @param erpProcure
     */
    int audit(ErpProcure erpProcure);


    /**
     * 更改物流状态
     *
     * @param erpProcure
     * @return
     */
    int logistics(ErpProcure erpProcure);


    /**
     * 导入商品数据
     *
     * @param userList        商品数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName        操作用户
     * @return 结果
     */
    String importErpProcure(List<ProcureExcelImport> userList, Boolean isUpdateSupport, String operName);
}
